package com.czx.drivingtest.dao;

import com.czx.drivingtest.model.dto.Answer;
import com.czx.drivingtest.model.dto.Question;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 测试题目的dao层
 *
 * @author czx
 * @version 2020/3/11 9:47 下午
 * @since JDK12
 */
public interface QuestionDao {

    /**
     * 根据id查询习题
     * @param questionId
     * @return
     */
    Question queryQuestionById(Integer questionId);

    /**
     * 获取第一个习题
     * @param subject 科目
     * @return
     */
    Question queryFirstQuestion(Integer subject);

    /**
     * 获取题目总数量
     * @param subject 科目
     * @return
     */
    int queryTotal(Integer subject);

    /**
     * 添加问题
     * @param question
     * @return
     */
    int insertQuestion(Question question);

    /**
     * 批量插入问题答案
     * @param answers
     * @param questionId
     * @return
     */
    int batchInsertAnswers(@Param("answers") List<Answer> answers, @Param("questionId") int questionId);

    /**
     * 查询下一题
     * @param questionId
     * @param subject 科目
     * @return
     */
    Integer queryNextQuestionId(@Param("questionId") int questionId,@Param("subject") Integer subject);

    /**
     * 获取上一题
     * @param questionId
     * @param subject 科目
     * @return
     */
    Integer queryPreQuestionId(@Param("questionId") int questionId,@Param("subject") Integer subject);

    /**
     * 获取所有的题目id
     * @param subject 科目
     * @return
     */
    List<Integer> queryQuestionIdList(Integer subject);

    /**
     * 查询问题集合
     * @param idList
     * @return
     */
    List<Question> queryByIds(List<Integer> idList);

    /**
     * 根据问题id查询问题的科目
     * @param questionId
     * @return
     */
    Integer querySubject(Integer questionId);
}
